package Day18.ObjectStream;

/**
 * @version 1.0
 * @BelongsProject:IntelliJ IDEA
 * @BelongsPackage:Day18.ObjectStream
 * @Author:hyhWTX
 * @ClassName:Demo04Test
 * @CreateTime:2022年-09月-26日 13:41
 * @Description: TODO (一句话描述以下该类的功能)
 */

import java.io.*;
import java.util.ArrayList;

/**
 *练习:序列化集合
 *      当我们想在文件中保存多个对象的时候
 *      可以把多个对象存储到一个集合中
 *      对集合进序列化和反序列化
 *
 * 分析：
 *      1.定义一个存储Person对象的ArrayList集合
 *      2.在ArrayList集合中存储Person对象
 *      3.创建—个序列化流ObjectOutputStream对象
 *      4.使用ObjectOutputStream对象中的方法writeObject,对集合进行序列化
 *      5.创建—个反序列化ObjectInputStream对象
 *      6.使用ObjectInputStream对象中的方法readObject读取文件中保存的集合
 *      7.把Object类型的集合转换为ArrayList类型
 *      8.遍历Arraylist集合
 *      9.释放资澜
 *
 */

public class Demo04Test {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //1.定义一个存储Person对象的ArrayList集合
        ArrayList<Person> list = new ArrayList<>();
        //2.在ArrayList集合中存储Person对象
       list.add(new Person("张三",18));
       list.add(new Person("李四",20));
       list.add(new Person("王五",21));
       //3.创建—个序列化流ObjectOutputStream对象
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\java黑马\\src\\Day18\\ObjectStream\\list.txt"));
        //4.使用ObjectOutputStream对象中的方法writeObject,对集合进行序列化
        oos.writeObject(list);
        //5.创建—个反序列化ObjectInputStream对象
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\java黑马\\src\\Day18\\ObjectStream\\list.txt"));
        //6.使用ObjectInputStream对象中的方法readObject读取文件中保存的集合
        Object o = ois.readObject();
        //7.把Object类型的集合转换为ArrayList类型
        ArrayList<Person> list2 = (ArrayList<Person>)o;
        //8.遍历Arraylist集合
        for (Person person : list2) {
            System.out.println(person);
        }
        //9.释放资澜
        ois.close();
        oos.close();

    }
}
